package com.rentalcar.wechat.service;


import com.alipay.api.domain.OrderItem;
import com.rentalcar.wechat.domain.UmsRentalOrder;
import com.rentalcar.wechat.vo.CancelOrderParams;
import com.rentalcar.wechat.vo.ConfirmOrderParams;
import com.rentalcar.wechat.vo.SubmitOrderParams;
import com.rentalcar.wechat.vo.SubmitOrderResponse;

import java.util.List;

/**
 * 订单服务接口
 */
public interface OrderServiceApi {

    /**
     * 提交订单
     *
     * @param submitOrderParams 用户提交的参数
     * @return 返回订单响应实体
     */
    SubmitOrderResponse submitOrder(SubmitOrderParams submitOrderParams);

    /**
     * 取消订单
     *
     * @param cancelOrderParams 取消订单参数
     * @return 1 成功 -1 订单不存在 -2 用户不匹配 0 失败
     */
    int cancleOrder(CancelOrderParams cancelOrderParams);


    /**
     * 确认付款
     *
     * @param confirmOrderParams 确认订单支付请求
     * @return 0 返回失败 1 成功
     */
    int confirmOrderPayed(ConfirmOrderParams confirmOrderParams);

    /**
     * 再次购买
     *
     * @param orderId    订单id
     * @param customerId 会员id
     * @return -2 订单不存在 1 成功
     */
    int buyAgain(long orderId, long customerId);

    /**
     * 查询订单详情
     *
     * @param id         订单id
     * @param customerId 会员id
     * @param orderItems 查询条件
     * @return 返回订单详情
     */
    UmsRentalOrder queryOrderDetailById(long id, long customerId, OrderItem... orderItems);

    /**
     * 保存订单信息
     *
     * @param orders                      订单信息
     * @param needCheckShoppingCartDelNum 是否需要删除购物车
     */
    void saveOrders(List<UmsRentalOrder> orders, boolean needCheckShoppingCartDelNum);

    /**
     * 自动取消订单（定时任务，勿删）
     */
    int autoCancelOrder();

}
